package com.ym.medical.dao;

import com.ym.medical.domain.entity.ConsultSummaryEntity;
import com.ym.medical.domain.entity.PatientDetailEntity;
import com.ym.medical.domain.param.PatientDetailParam;
import com.ym.medical.domain.vo.MyPatientVO;
import com.ym.medical.domain.vo.PCMyDoctorVo;
import com.ym.medical.domain.vo.PatientAccountVo;
import com.ym.medical.domain.vo.PatientVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * 患者家人Dao接口
 *
 * @author ym
 * @date 2020-08-21
 */
@Repository
public interface PatientDetailDao extends Mapper<PatientDetailEntity> {



	List<ConsultSummaryEntity> opinionList(Long id);

	/***
	 * 根据当前用户获取分组内成员信息
	 * @param groupId  分组id
	 * @param userId  当前用户id
	 * @param keyword  当前用户id
	 * @return
	 */
	List<MyPatientVO> getGroupFriends(
			@Param("groupId") Long groupId,
			@Param("userId") Long userId,
			@Param("keyword") String keyword);

	/***
	 * 患者家人列表
	 * @param patientDetailModel
	 * @return
	 */
	List<PatientDetailEntity> getFamily(PatientDetailParam patientDetailModel);

	/***
	 * 患者医生
	 * @param userId
	 * @return
	 */
	List<PCMyDoctorVo> getPatientDoctor(Long userId);

	/**
	 * userId 查询患者列表
	 *
	 * @param groupId
	 * @param userId
	 * @param keyword
	 * @return
	 */
	List<MyPatientVO> getMyGroupFan(
			@Param("groupId") Long groupId,
			@Param("userId") Long userId,
			@Param("keyword") String keyword);

	/***
	 * 我的粉丝
	 * @param userId
	 * @param keyword
	 * @param system
	 * @param name
	 * @return
	 */
	List<MyPatientVO> getFan(
			@Param("userId") Long userId,
			@Param("keyword") String keyword,
			@Param("system") String system,
			@Param("name") String name);

	/**
	 * 全部喊着检索
	 *
	 * @param userId
	 * @param keyword
	 * @param system
	 * @param name
	 * @return
	 */
	List<MyPatientVO> selectPatients(
			@Param("userId") Long userId,
			@Param("keyword") String keyword,
			@Param("system") String system,
			@Param("name") String name);

	List<PatientDetailEntity> listPagePatient(PatientDetailParam model);

	/**
	 * 患者账户列表
	 * @param phoneNo
	 * @param realName
	 * @return
	 */
	List<PatientAccountVo> getAccountList(
			@Param("phoneNo") String phoneNo,
			@Param("realName") String realName);

	/**
	 * 所有分组患者
	 * @param currId
	 * @param keyword
	 * @return
	 */
	List<MyPatientVO> followPatientList(
			@Param("currId") Long currId,
			@Param("keyword") String keyword);

	/**
	 * 根据订单id查询患者信息
	 * @param orderId
	 * @return
	 */
	PatientDetailEntity selectByOrderId(@Param("orderId") Long orderId);
	/***
	 * 患者信息列表
	 * @param patientDetailModel
	 * @return
	 */
    List<PatientVo> getPatients(PatientDetailParam patientDetailModel);
}
